
"use strict";

/**
 * @param {Egg.EggAppInfo} appInfo app info
 */
const path = require("path");
module.exports = appInfo => {
  /**
   * built-in config
   * @type {Egg.EggAppConfig}
   **/
  const config = (exports = {});

  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + "_1676274235776_186";

  // add your middleware config here
  /* 配置项-1 */
  config.middleware = ["jwtErr"];

  // add your user config here
  const userConfig = {
    // myAppName: 'egg',
  };

  /* 配置项-2 */
  // 统一错误信息配置（注：match和ignore不可以同时配置）
  // config.errorHandler = {
  //   enable: true, // 中间件开启配置
  //   match: '', // 设置请求中间件的请求路由
  //   // ignore: '', // 设置不经过这个中间件的请求路由
  // };

  /* 配置项-3 */
  // 鉴权 生成token
  config.jwt = {
    secret: "database", // 自定义token的加密条件字符串，可按各自的需求填写
    // ignore: [ '/api/registered', '/api/login' ], // 哪些请求不需要认证
    // enable: true, // default is false
    // match: '/jwt', // optional
    expiresIn: "24h",
  };
  /* 配置项-4 */
  // 安全配置
  config.security = {
    csrf: {
      enable: false,
      ignoreJSON: true,
    },
    // 允许访问接口的白名单
    domainWhiteList: ["http://localhost:8080", "http://localhost:8081"],
  };
  /* 配置项-5 */
  // 跨域配置
  config.cors = {
    origin: "*",
    allowMethods: "GET,HEAD,PUT,POST,DELETE,PATCH",
  };
  /* 配置项-6 */
  // 使用数据库管理插件
  config.sequelize = {
    dialect: "mysql", // 链接源
    host: "localhost", // ip地址
    port: 3306, // 数据库端口号
    database: "product", // 数据库名
    username: "root", // 账号
    password: "root", // 密码
    // 配置数据库时间为东八区北京时间
    timezone: "+08:00",
    define: {
      // model的全局配置
      timestamps: true, // 添加create,update,delete时间戳
      paranoid: false, // 添加软删除
      freezeTableName: true, // 防止修改表名为复数
      underscored: false, // 防止驼峰式字段被默认转为下划线
    },
    // 打印日志
    logging: false,
    // 时间格式化
    dialectOptions: {
      dateStrings: true,
      typeCast: true,
    },
  };

  //文件存放路径和文件白名单
  config.uploadDir = "app/public/upload";
  config.multipart = {
    mode: "file",
    // fileSize: 1048576000,
    // whitelist: [".png", ".jpg", ".pdf", ".mp4"],
  };
  // 文件静态路径
  config.static = {
    prefix: "/public", //访问前缀
    dir: path.join(appInfo.baseDir, "app/public"),
    dynamic: true,
    preload: false,
    maxAge: 31536000,
    buffer: true,
  };
  exports.upload = {
    // 上传文件时允许的最大文件大小（单位：字节）
    maxFileSize: 1024 * 1024 * 3, // 3MB
    // 上传文件时允许的最小文件大小（单位：字节）
    minFileSize: 0,
    // 允许上传的文件类型（MIME 类型）
    acceptFileTypes: /(\.|\/)(gif|jpg|jpeg|png)$/i,
    // 允许同时上传的文件数量
    maxFiles: 3,
  };


  return {
    ...config,
    ...userConfig,
  };
};